// src/api/user.js
// 用户相关API接口


/**
 * 用户登录
 * @param {object} loginData - 登录数据 {username, password}
 * @returns {Promise} 登录结果
 */
export async function login(loginData) {
  try {
    const response = await fetch(`/api/login`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(loginData)
    })

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`)
    }

    const result = await response.json()
    
    if (result.code === 200) {
      return result.data
    } else {
      throw new Error(result.msg || '登录失败')
    }
  } catch (error) {
    console.error('登录失败:', error)
    throw error
  }
}

/**
 * 根据用户ID获取用户详细信息
 * @param {number} userId - 用户ID
 * @returns {Promise} 用户详细信息
 */
export async function getUserDetails(userId) {
  try {
    const response = await fetch(`/api/user/details/${userId}`, {
      method: 'GET',
      headers: {
        'Content-Type': 'application/json',
        // 如果需要认证，可以添加Authorization头
        // 'Authorization': `Bearer ${token}`
      }
    })

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`)
    }

    const result = await response.json()
    
    if (result.code === 200) {
        console.log(result.data);
        
      return result.data
    } else {
      throw new Error(result.msg || '获取用户信息失败')
    }
  } catch (error) {
    console.error('获取用户详细信息失败:', error)
    throw error
  }
}

/**
 * 更新用户信息
 * @param {number} userId - 用户ID
 * @param {object} userData - 用户数据
 * @returns {Promise} 更新结果
 */
export async function updateUserInfo(userId, userData) {
  try {
    const response = await fetch(`/api/admin/user/update/${userId}`, {
      method: 'PUT',
      headers: {
        'Content-Type': 'application/json',
        // 如果需要认证，可以添加Authorization头
        // 'Authorization': `Bearer ${token}`
      },
      body: JSON.stringify(userData)
    })

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`)
    }

    const result = await response.json()
    
    if (result.code === 200) {
      return result.data
    } else {
      throw new Error(result.msg || '更新用户信息失败')
    }
  } catch (error) {
    console.error('更新用户信息失败:', error)
    throw error
  }
}

/**
 * 用户注册
 * @param {object} registerData - 注册数据 {username, password, phone, cityId}
 * @returns {Promise} 注册结果
 */
export async function register(registerData) {
  try {
    console.log("发送注册请求，数据:", registerData);
    
    const response = await fetch(`/api/register`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(registerData)
    })

    console.log("响应状态:", response.status);
    console.log("响应头:", response.headers);

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`)
    }

    // 检查响应是否有内容
    const text = await response.text()
    console.log("服务器原始响应:", text);
    
    if (!text) {
      throw new Error('服务器返回空响应')
    }

    let result
    try {
      result = JSON.parse(text)
    } catch (parseError) {
      console.error('JSON解析失败:', text)
      throw new Error('服务器返回的数据格式不正确')
    }
    
    if (result.code === 200) {
      return result.data
    } else {
      throw new Error(result.msg || '注册失败')
    }
  } catch (error) {
    console.error('注册失败:', error)
    throw error
  }
}

/**
 * 获取省份列表
 * @returns {Promise} 省份列表
 */
export async function getProvinceList() {
  try {
    const response = await fetch(`/api/province/list`, {
      method: 'GET',
      headers: {
        'Content-Type': 'application/json',
      }
    })

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`)
    }

    // 检查响应是否有内容
    const text = await response.text()
    if (!text) {
      throw new Error('服务器返回空响应')
    }

    let result
    try {
      result = JSON.parse(text)
    } catch (parseError) {
      console.error('JSON解析失败:', text)
      throw new Error('服务器返回的数据格式不正确')
    }
    
    if (result.code === 200) {
      return result.data
    } else {
      throw new Error(result.msg || '获取省份列表失败')
    }
  } catch (error) {
    console.error('获取省份列表失败:', error)
    throw error
  }
}

/**
 * 根据省份ID获取城市列表
 * @param {number} provinceId - 省份ID
 * @returns {Promise} 城市列表
 */
export async function getCityList(provinceId) {
  try {
    const response = await fetch(`/api/city/list/${provinceId}`, {
      method: 'GET',
      headers: {
        'Content-Type': 'application/json',
      }
    })

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`)
    }

    // 检查响应是否有内容
    const text = await response.text()
    if (!text) {
      throw new Error('服务器返回空响应')
    }

    let result
    try {
      result = JSON.parse(text)
    } catch (parseError) {
      console.error('JSON解析失败:', text)
      throw new Error('服务器返回的数据格式不正确')
    }
    
    if (result.code === 200) {
      return result.data
    } else {
      throw new Error(result.msg || '获取城市列表失败')
    }
  } catch (error) {
    console.error('获取城市列表失败:', error)
    throw error
  }
}

/**
 * 获取美食店铺列表（分页）
 * @param {object} params - 查询参数
 * @returns {Promise} 店铺列表数据
 */
export async function getFoodStoreList(params = {}) {
  try {
    const response = await fetch(`/api/admin/foodStore/page`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(params)
    })

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`)
    }

    // 检查响应是否有内容
    const text = await response.text()
    if (!text) {
      throw new Error('服务器返回空响应')
    }

    let result
    try {
      result = JSON.parse(text)
    } catch (parseError) {
      console.error('JSON解析失败:', text)
      throw new Error('服务器返回的数据格式不正确')
    }
    
    if (result.code === 200) {
      return result.data
    } else {
      throw new Error(result.msg || '获取店铺列表失败')
    }
  } catch (error) {
    console.error('获取店铺列表失败:', error)
    throw error
  }
}